/*
 * Copyright (C) 2017 Fabian Terhorst
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file kt in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package io.fabianterhorst.isometric.shapes;

import io.fabianterhorst.isometric.Path;
import io.fabianterhorst.isometric.Point;
import io.fabianterhorst.isometric.Shape;

/**
 * Knot Class.
 *
 * @since 02.03.21
 */
public class Knot extends Shape {
    /**
     * Constructor
     *
     * @param origin {@link Point}
     */
    public Knot(Point origin) {
        push(new Prism(Point.ORIGIN, 5, 1, 1).getPaths());
        push(new Prism(new Point(4, 1, 0), 1, 4, 1).getPaths());
        push(new Prism(new Point(4, 4, -2), 1, 1, 3).getPaths());
        push(new Path(new Point[] {new Point(0, 0, 2), new Point(0, 0, 1), new Point(1, 0, 1), new Point(1, 0, 2)}));
        push(new Path(new Point[] {new Point(0, 0, 2), new Point(0, 1, 2), new Point(0, 1, 1), new Point(0, 0, 1)}));
        scalePaths(Point.ORIGIN, 1.0 / 5.0);
        translatePaths(-0.1, 0.15, 0.4);
        translatePaths(origin.getX(), origin.getY(), origin.getZ());
    }
}